<?php

namespace app\common\controller\meettale;

use app\admin\model\ba\Branch;
use app\admin\model\Branchpiles;
use app\admin\model\Branchseat;
use think\facade\Db;
use think\Log;

class Zhuangzhi
{
    //桩详情
    public function searchPileStatus($pileno)
    {
        $info=[
            'type'=>'searchPileStatus',
            'pileno'=>$pileno,
            'timestamp'=>time(),
            'side'=>'all'
        ];
        $data=$this->send($info);
        return $data;
    }
    //开
    public function remoteOpenPile($pileno,$runtime=8,$side='all')
    {
        $info=[
            'type'=>'remoteOpenPile',
            'pileno'=>$pileno,
            'timestamp'=>time(),
            'side'=>$side,
            'runtime'=>$runtime
        ];
        $this->send($info);
    }
    //关
    public function remoteClosePile($pileno,$side='all'){
        $info=[
            'type'=>'remoteClosePile',
            'pileno'=>$pileno,
            'timestamp'=>time(),
            'side'=>$side
        ];
        $this->send($info);
    }
    //分页获取营地列表
    public function listBranchesByPage($page_no=1,$page_size=1){
        $info=[
            'type'=>'listBranchesPaging',
            'page_no'=>$page_no,
            'page_size'=>$page_size
        ];
        $data=$this->send($info);
        return $data;
    }
    //营地列表
    public function listBranches(){
        $page_no=1;
        $i=1;
        while (true){
            $data=$this->listBranchesByPage($page_no);
            if($data==[]){
                return true;
            }
            foreach ($data as $v){
                $model=new Branch();
                $allowField=Db::getTableFields('ba_branch');
                unset($v['uid']);
                unset($v['features']);
                unset($v['line']);
                unset($v['all_money']);
                unset($v['sy_money']);
                unset($v['media']);
                try {
                    if ($model->where('id', $v['id'])->find()) {
                        // 进行数据更新时，确保数据安全，必要时进行数据过滤或校验
                        $model->where(['id' => $v['id']])->save($v);
                    } else {
                        // 对于新数据的插入，同样需要确保数据的安全性
                        $model->allowField($allowField)->save($v);
                    }
                    $this->listCampositionsInBranch($v['id']);
                    $this->getCampPiles($v['id']);
                } catch (\Exception $e) {
                    // 记录异常信息，可以进行错误日志记录，或者做一些错误处理
                    \think\facade\Log::error('营地'.$e->getMessage());
                    continue; // 捕获异常，继续下一个循环
                }
            }
//            if ($i==10){
//                return true;
//            }
            $i++;
            $page_no++;
        }
        return $data;
    }
    //营地营位
    public function listCampositionsInBranch($branch_id){
        $info=[
            'type'=>'listCampositionsInBranch',
            'branch_id'=>$branch_id
        ];
        $data=$this->send($info);
        foreach ($data as $v){
            $model=new Branchseat();
            unset($v['uid']);
            try {
                if ($model->where('id', $v['id'])->find()) {
                    // 进行数据更新时，确保数据安全，必要时进行数据过滤或校验
                    $model->where(['id' => $v['id']])->save($v);
                } else {
                    // 对于新数据的插入，同样需要确保数据的安全性
                    $model->save($v);
                }
            } catch (\Exception $e) {
                // 记录异常信息，可以进行错误日志记录，或者做一些错误处理
                \think\facade\Log::error('营位'.$e->getMessage());
                continue; // 捕获异常，继续下一个循环
            }
        }
        return $data;
    }
    //营位桩
    public function getCampPiles($campid){
        $info=[
            'type'=>'getCampPiles',
            'campid'=>$campid
        ];
        $data=$this->send($info);
        foreach ($data as $v){
            $model=new Branchpiles();
            unset($v['uid']);
            try {
                $Status=$this->searchPileStatus($v['title']);
                $v['code']=$Status['code'];
                $v['msg']=$Status['msg'];
                if ($model->where('id', $v['id'])->find()) {
                    // 进行数据更新时，确保数据安全，必要时进行数据过滤或校验
                    $model->where(['id' => $v['id']])->save($v);
                } else {
                    // 对于新数据的插入，同样需要确保数据的安全性
                    $model->save($v);
                }
            } catch (\Exception $e) {
                // 记录异常信息，可以进行错误日志记录，或者做一些错误处理
                \think\facade\Log::error('桩'.$e->getMessage());
                continue; // 捕获异常，继续下一个循环
            }
        }
        return $data;
    }

    //发送
    public function send($info)
    {
        $url = 'http://service.poleworld.cn/api/Pile2.php?token='.'ZTXTOKEN_5BMH876758ETTD329895AC_TEST';
        //发送get请求
        // 将参数数组转为查询字符串
        $info = http_build_query($info);
        // 构造带有查询参数的完整 URL
        $fullUrl = $url . '&' . $info;
        $data=file_get_contents($fullUrl);
        $data=json_decode($data,true);
        return $data;
    }
}